﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

namespace BookBuy
{
    public partial class TinhPhiVanChuyen : BasePage
    {
        public string url;
        public string name;
        public string idCard_VC;
        public List<CHITIETGIOHANG> CTGioHang = new List<CHITIETGIOHANG>();
        public muasachEntities data = new muasachEntities();
        public float tongtien = 0;
        public float tienship = 0;
        public bool tinhtienvanchuyen;
        protected void Page_Load(object sender, EventArgs e)
        {
            CTGioHang = (List<CHITIETGIOHANG>)Cache["CTGioHang"];
            string id = Request.QueryString["id"].ToString();
            switch (id)
            {
                case "1":
                    url = "http://upstransport.somee.com/WebServices/TransportWebService.asmx";
                    name = "TransportWebService";
                    break;
                case "2":
                    url = "http://globaltranz.somee.com/WS/VC10.asmx";
                    name = "Service1";
                    break;
            }
            TienSanPham(CTGioHang);
            if (!IsPostBack)
            {
                tinhtienvanchuyen = false;
                // Lấy chi tiết giỏ hàng
                
                // login vào bên vận chuyển
                string sID = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "WSLogin", new object[] { "kd10", "123456" });
                if (sID == "")
                {
                    System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Đăng nhập không thành công')</SCRIPT>");
                    Response.Redirect("Home.aspx", true);
                }
                else
                { 
                    // ghi vào session
                    Session.Add("sID", sID);
                    // lấy danh sách các tỉnh
                    string[] dstinh = (string[])WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetProvinces", new object[] { });
                    for (int i = 0; i < dstinh.Count(); i++)
                    { 
                        cbx_tinhden.Items.Add(new ListItem(dstinh[i]));
                    }
                    // lấy loại hàng hóa
                    string[] dsloaihang = (string[])WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetTypesOfGoods", new object[] { });
                    for (int i = 0; i < dsloaihang.Count(); i++)
                    {
                        cbx_loaihang.Items.Add(new ListItem(dsloaihang[i]));
                    }
                    // lấy loại dịch vụ
                    string[] dsdichvu = (string[])WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetServiceTypes", new object[] { });
                    for (int i = 0; i < dsdichvu.Count(); i++)
                    {
                        cbx_loaidichvu.Items.Add(new ListItem(dsdichvu[i]));
                    }
                }
                //
            }
            
        }

        public int Count(List<CHITIETGIOHANG> ctgiohang)
        {
            int kq = 0;
            for (int i = 0; i < ctgiohang.Count; i++)
            {
                kq += ctgiohang[i].SOLUONG;
            }
            return kq;
        }
        public void TienSanPham(List<CHITIETGIOHANG> ctgiohang)
        {
            //for (int i = 0; i < ctgiohang.Count; i++)
            //{
            //    SANPHAM sach = data.GetSanPhams(CTGioHang[i].MASP);
            //    float thanhtien = CTGioHang[i].SOLUONG * float.Parse(sach.GIABAN);
            //    tongtien += thanhtien;
            //}
        }
        public int Dai(List<CHITIETGIOHANG> ctgiohang)
        {
            return 25;
        }
        public int Rong(List<CHITIETGIOHANG> ctgiohang)
        {
            return 15;
        }
        public int Cao(List<CHITIETGIOHANG> ctgiohang)
        {
            int kq = 0;
            for (int i = 0; i < ctgiohang.Count; i++)
            {
                kq += 5 * ctgiohang[i].SOLUONG;
            }
            return kq;
        }        
        protected void btn_tinhphivanchuyen_Click(object sender, ImageClickEventArgs e)
        {

            // kiểm tra người dùng nhập đủ hay chưa
            if (tbx_diachiden.Text == "")
            {
                lb_check_diachiden.ForeColor = Color.Red;
                if (cbx_tinhden.Text == "")
                    lb_check_tinh.ForeColor = Color.Red;
                return;
            }
            if (cbx_tinhden.Text == "")
            {
                lb_check_tinh.ForeColor = Color.Red;
                return;
            }

            
            // bắt đầu tính vận chuyển            
            string From = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetPosition", new object[] { "227 Nguyễn Văn Cừ", "Hồ Chí Minh" });

            //string FromPosition = "Hồ Chí Minh|227 Nguyễn Văn Cừ";
            string ToPosition = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetPosition", new object[] { tbx_diachiden.Text.Trim(), cbx_tinhden.Text });
            //string ToPosition = cbx_tinhden.Text + "|" + tbx_diachiden.Text.Trim();
            string ItemsInformation = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "CreateItemsInformation", new object[] { cbx_loaidichvu.Text, 1, Dai(CTGioHang), Rong(CTGioHang), Cao(CTGioHang), cbx_loaihang.Text });
            tienship = (float)WebserviceInvoker.WSInvoker.CallWebService(url, name, "ShippingPrice", new object[] { From, ToPosition, ItemsInformation });
            if (tienship <= 0)
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Không tính được tiền vận chuyển')</SCRIPT>");
                return;
            }
            lb_tienship.Text = tienship.ToString();
            lb_tongtien.Text = (tienship + tongtien).ToString();
            tinhtienvanchuyen = true;
        }
        protected void btn_thanhtoan_Click(object sender, ImageClickEventArgs e)
        {
            // kiểm tra đăng nhập

            // kiểm tra người dùng đã tính tiền vận chuyển hay chưa
            if (tinhtienvanchuyen)
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Tính tiền vận chuyển trước khi thanh toán')</SCRIPT>");
                return;
            }
            // Đặt vận chuyển
            string sID = (string)Session["sID"];
            string From = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetPosition", new object[] { "227 Nguyễn Văn Cừ", "Hồ Chí Minh" });

            //string FromPosition = "Hồ Chí Minh|227 Nguyễn Văn Cừ";
            string ToPosition = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "GetPosition", new object[] { tbx_diachiden.Text.Trim(), cbx_tinhden.Text });
            //string ToPosition = cbx_tinhden.Text + "|" + tbx_diachiden.Text.Trim();
            string ItemsInformation = (string)WebserviceInvoker.WSInvoker.CallWebService(url, name, "CreateItemsInformation", new object[] { cbx_loaidichvu.Text, 1, Dai(CTGioHang), Rong(CTGioHang), Cao(CTGioHang), cbx_loaihang.Text });
            
            // Thanh toán
            System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Thanh toán thành công')</SCRIPT>");
            // Đăng nhập vào ws của môi giới ngân hàng
            string sID_nganhang = (string)WebserviceInvoker.WSInvoker.CallWebService("http://aspspider.info/nh1021/Service1.asmx", "Service1", "Login", new object[] { "nxbtdtt", "nxbtdtt" });
            // Thực hiện thanh toán cho nhà sách
            int thanhtoan_nhasach = (int)WebserviceInvoker.WSInvoker.CallWebService("http://aspspider.info/nh1021/Service1.asmx", "Service1", "Payment", new object[] { sID_nganhang, "khachhang", "4024007175715357",(int)tongtien });
            if(thanhtoan_nhasach <= 0)
            {
                // tạm thời để vậy, xử lý sau
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Thẻ bạn có vấn đề')</SCRIPT>");
                return;
            }
            float chiphi = (float)WebserviceInvoker.WSInvoker.CallWebService(url, name, "PlaceTransportCommand", new object[] { sID, From, ToPosition, ItemsInformation, DateTime.Now });
            // Nhà sách thanh toán cho bên vận chuyển
            int thanhtoan_vanchuyen = (int)WebserviceInvoker.WSInvoker.CallWebService("http://aspspider.info/nh1021/Service1.asmx", "Service1", "Payment", new object[] { sID_nganhang, "khachhang", "khachhang", (int)tongtien });
            // xong 
            if(thanhtoan_vanchuyen <= 0)
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Thẻ bạn có vấn đề')</SCRIPT>");
                return;
            }
            System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Thanh toán thành công')</SCRIPT>");
        }
    }
}